#ifndef __MENU_H
#define __MENU_H

#include <unistd.h>
#include "spilcd.h"
#include "xl9555.h"

// 菜单系统定义
// 按键映射（根据实际硬件调整）
#define KEY_UP      0    // 上键对应KEY1
#define KEY_DOWN    1    // 下键对应KEY2
#define KEY_ENTER   2    // 确认键对应KEY0
#define KEY_BACK    3    // 返回键对应KEY3（预留）

// 菜单项结构
typedef struct {
    char *title;               // 菜单项标题
    void (*callback)(void);    // 选中后的回调函数
} menu_item_t;

// 菜单结构
typedef struct {
    menu_item_t *items;        // 菜单项数组
    uint8_t item_count;        // 菜单项数量
    uint8_t selected_index;    // 当前选中项索引
    uint16_t x, y;             // 菜单显示位置
    uint16_t width;            // 菜单宽度
    lcd_font_t font;           // 字体
    uint16_t normal_color;     // 普通项颜色
    uint16_t selected_color;   // 选中项颜色
} menu_t;

/**
 * 功能函数
 * 
 */

void menu_init(void); // 菜单初始化
void menu_draw(menu_t *menu);  // 绘制菜单
void handle_menu_key(uint8_t key); // 处理按键输入响应

#endif